package RecursiveSearcher;

/**
 * @ClassName LC814
 * @Description 二叉树剪枝
 * @Author ZJX
 * @Date 2024/9/13 13:02
 * @Version 1.0
 */
public class LC814 {
    public TreeNode pruneTree(TreeNode root) {
        return dfs(root);
    }

    private TreeNode dfs(TreeNode root) {
        if (root == null) {
            return null;
        }

        // 递归处理左子树和右子树
        root.left = dfs(root.left);
        root.right = dfs(root.right);

        // 如果当前节点是0且左右子树都为空，剪掉当前节点
        if (root.left == null && root.right == null && root.val == 0) {
            return null;
        }

        return root;  // 否则保留当前节点
    }
}
